package Control;

import Modelo.Aula;
import Modelo.Grupo;
import Modelo.Lecciones;
import Modelo.Materia;
import Modelo.Nivel;
import Modelo.Profesor;
import Modelo.RegistroHorario;
import Modelo.Usuario;
import Vista.Interfaz;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Casa
 */
public class Control {

    private Interfaz interfaz;
    private ControlGestores controlGestores;

    public Control() {
        interfaz = new Interfaz(this);
        controlGestores = new ControlGestores();
    }

    public boolean validarCedula(String cedula) {
        boolean correcto = false;
        if (!interfaz.getProfesorInsertar().jCheckBox2.isSelected()) {
            if (cedula.matches("^(\\d{1}-*?\\d{4}-*?\\d{4})$")) {
                correcto = true;
            }
        } else {
//            if (cedula.matches("")) {
            correcto = true;
//            }
        }
        return correcto;
    }

    public boolean validarNombre(String nombreApellido) {
        boolean correcto = false;
        if (nombreApellido.matches("^([A-Z]\\D{2,12})")) {
            correcto = true;
        }
        return correcto;
    }

    public boolean validarCodigo(String codigo) {
        boolean correcto = false;
        if (codigo.matches("^\\d{1,3}")) {
            correcto = true;
        }
        return correcto;
    }

    public boolean validarTelefono(String telefono) {
        boolean correcto = false;
        if ((telefono.matches("^(\\d{2}-*?\\d{2}-*?\\d{2}-*?\\d{2})$"))) {
            correcto = true;
        }
        return correcto;
    }

    public boolean agregarAula() {
        boolean result = true;
        ArrayList<Aula> listaAulas = controlGestores.getGestorAula().ListarAulas();
        Aula a = new Aula(interfaz.getAulaInsertar().jTextField1.getText(), interfaz.getAulaInsertar().jTextArea1.getText());
        for (int i = 0; i < listaAulas.size(); i++) {
            if (listaAulas.get(i).getIdAula().equals(a.getIdAula())) {
                result = false;
            }
        }
        if (result == false) {
            JOptionPane.showMessageDialog(null, "El aula " + a.getIdAula() + " ya existe, Aula no ingresada", "ERROR", 0);
        } else {
            controlGestores.getGestorAula().registrarAula(a);
            JOptionPane.showMessageDialog(null, "Aula guardada correctamente", "EXITO", 1);
            result = true;
        }
        return result;
    }

    public String obtenerCedula(String cadena) {
        return cadena.split(" ")[0];
    }

    public boolean agregarNivel() {
        String idNivel = "";
        String seccion = "";
        if (interfaz.getGrupoInsertar().jRadioButton1.isSelected()) {
            idNivel = "setimo";
        } else if (interfaz.getGrupoInsertar().jRadioButton2.isSelected()) {
            idNivel = "octavo";
        } else if (interfaz.getGrupoInsertar().jRadioButton3.isSelected()) {
            idNivel = "noveno";
        } else if (interfaz.getGrupoInsertar().jRadioButton4.isSelected()) {
            idNivel = "decimo";
        } else if (interfaz.getGrupoInsertar().jRadioButton5.isSelected()) {
            idNivel = "undecimo";
        }
        Nivel n = new Nivel(idNivel, Integer.parseInt(String.valueOf(interfaz.getGrupoInsertar().jSpinner2.getValue())), String.valueOf(GregorianCalendar.YEAR));
        return controlGestores.getGestorNivel().actualizarNivel(n);
    }

    public boolean agregarHorarioAlterno() {
        return true;
    }

    public boolean agregarHorario() {
        return true;
    }

    public boolean agregarInformacionProfesor() {
        return true;
    }

    public boolean agregarMateria() {
        String nombre = String.valueOf(interfaz.getMateriaInsertar().jTextField1.getText());
        String idNivel = "";
        int cantLecc = Integer.parseInt(String.valueOf(interfaz.getMateriaInsertar().jSpinner1.getValue()));
        if (interfaz.getMateriaInsertar().jRadioButton1.isSelected()) {
            idNivel = "setimo";
        } else if (interfaz.getMateriaInsertar().jRadioButton2.isSelected()) {
            idNivel = "octavo";
        } else if (interfaz.getMateriaInsertar().jRadioButton3.isSelected()) {
            idNivel = "noveno";
        } else if (interfaz.getMateriaInsertar().jRadioButton4.isSelected()) {
            idNivel = "decimo";
        } else if (interfaz.getMateriaInsertar().jRadioButton5.isSelected()) {
            idNivel = "undecimo";
        }
        Materia m = new Materia(idNivel, nombre, cantLecc);
        return controlGestores.getGestorMateria().registroMateria(m);
    }

    public boolean agregarProfesor() {
        String cedula = String.valueOf(interfaz.getProfesorInsertar().jTextField1.getText());
        String nombre = String.valueOf(interfaz.getProfesorInsertar().jTextField2.getText());
        String apellido1 = String.valueOf(interfaz.getProfesorInsertar().jTextField3.getText());
        String apellido2 = String.valueOf(interfaz.getProfesorInsertar().jTextField4.getText());
        String direccion = String.valueOf(interfaz.getProfesorInsertar().jTextField5.getText());
        String telefono = String.valueOf(interfaz.getProfesorInsertar().jTextField6.getText());
        String grado = String.valueOf(interfaz.getProfesorInsertar().jComboBox1.getSelectedItem());
        String tipo = String.valueOf(interfaz.getProfesorInsertar().jComboBox2.getSelectedItem());
        String restriccion = String.valueOf(interfaz.getProfesorInsertar().jTextArea1.getText());

        ArrayList<String> materias = new ArrayList();
        for (int i = 0; i < interfaz.getProfesorInsertar().jList1.getSelectedValuesList().size(); i++) {
            materias.add(String.valueOf(interfaz.getProfesorInsertar().jList1.getSelectedValuesList().get(i)));
        }

        String nombreCompleto = nombre + " " + apellido1 + " " + apellido2;
        Profesor p = new Profesor(cedula, nombreCompleto, telefono, direccion, grado, restriccion, tipo);
        return controlGestores.getGestorProfesor().registroProfesor(p, materias);
    }

    public boolean verificar() {
        String user = interfaz.getLoggin().jTextField1.getText();
        String pass = interfaz.getLoggin().jPasswordField1.getText();
        interfaz.setUsuarioActual(controlGestores.getGestorUsuario().verificarUsuario(user, pass));
        return interfaz.getUsuarioActual() != null;
    }

    public void llenarMateriasProfesor() {
        ArrayList<String> listaMaterias = controlGestores.getGestorMateria().ListarMateriasProfesor();
        final String materias[] = new String[listaMaterias.size()];
        for (int i = 0; i < listaMaterias.size(); i++) {
            materias[i] = listaMaterias.get(i);
        }
        interfaz.getProfesorInsertar().jList1.setModel(new javax.swing.AbstractListModel() {
            String[] strings = materias;

            public int getSize() {
                return strings.length;
            }

            public Object getElementAt(int i) {
                return strings[i];
            }
        });
    }

    public String cambiarNivel(String nivel) {
        String nc = "";
        if (nivel.equals("Sétimo")) {
            nc = "7";
        }
        if (nivel.equals("Octavo")) {
            nc = "8";
        }
        if (nivel.equals("Noveno")) {
            nc = "9";
        }
        if (nivel.equals("Décimo")) {
            nc = "10";
        }
        if (nivel.equals("Undécimo")) {
            nc = "11";
        }
        return nc;
    }

    public void llenarNivel(String nivel) {

        String nc = cambiarNivel(nivel);
        ArrayList<Grupo> listaGrupo = controlGestores.getGestorGrupo().obtenerSeccion(nc);
        ArrayList<Materia> listaMateria = controlGestores.getGestorMateria().obtenerMaterias(nc);

        final String grupos[] = new String[listaGrupo.size()];
        for (int i = 0; i < listaGrupo.size(); i++) {
            grupos[i] = listaGrupo.get(i).getSeccion();
        }
        interfaz.getNivelConsultar().getjList1().setModel(new javax.swing.AbstractListModel() {
            String[] strings = grupos;

            public int getSize() {
                return strings.length;
            }

            public Object getElementAt(int i) {
                return strings[i];
            }

        });
        for (int i = 0; i < listaMateria.size(); i++) {
            interfaz.getNivelConsultar().getjTable1().setValueAt(listaMateria.get(i).getNombreMateria(), i, 0);
            interfaz.getNivelConsultar().getjTable1().setValueAt(listaMateria.get(i).getCantLecciones(), i, 1);
        }

    }

    public void llenarProfesoresAula() {
//        ArrayList<Profesor> listaProfesores = controlGestores.getGestorProfesor().ListarProfesores();
//        final String profesores[] = new String[listaProfesores.size()];
//        for (int i = 0; i < listaProfesores.size(); i++) {
//            profesores[i] = listaProfesores.get(i).getMaterias();
//        }
//        interfaz.getAulaInsertar().jList1.setModel(new javax.swing.AbstractListModel() {
//            String[] strings = profesores;
//
//            public int getSize() {
//                return strings.length;
//            }
//
//            public Object getElementAt(int i) {
//                return strings[i];
//            }
//        });
    }

    public void llenarProfesores() {
        ArrayList<Profesor> listaProfesores = controlGestores.getGestorProfesor().ListarProfesores();
        ArrayList<Lecciones> listaLecciones = controlGestores.getGestorProfesor().listarLeccionesDeProfesores();
        for (int i = 0; i < listaProfesores.size(); i++) {
            interfaz.getProfesorConsultar().jTable1.setValueAt(listaProfesores.get(i).getCedula(), i, 0);
            interfaz.getProfesorConsultar().jTable1.setValueAt(listaProfesores.get(i).getNombre(), i, 1);
            interfaz.getProfesorConsultar().jTable1.setValueAt(listaProfesores.get(i).getTelefono(), i, 4);
            interfaz.getProfesorConsultar().jTable1.setValueAt(listaProfesores.get(i).getTipo(), i, 5);
            interfaz.getProfesorConsultar().jTable1.setValueAt("No Asignado", i, 6);
            for (int j = 0; j < listaLecciones.size(); j++) {

                if (listaProfesores.get(i).getCedula().equals(listaLecciones.get(j).getCedula())) {
                    interfaz.getProfesorConsultar().jTable1.setValueAt(listaLecciones.get(j).getCantLecciones(), i, 6);
                }
            }
            // aca empiezan las listas
            if (listaProfesores.get(i).getMaterias().size() <= 0 || listaProfesores.get(i).getMaterias() == null) {
                interfaz.getProfesorConsultar().jTable1.setValueAt("No asignado", i, 2);
            } else {
                String materias = "";
                for (int j = 0; j < listaProfesores.get(i).getMaterias().size(); j++) {
                    if (j == 0) {
                        materias = listaProfesores.get(i).getMaterias().get(j);
                    } else {
                        materias += ", ";
                        materias += listaProfesores.get(i).getMaterias().get(j);
                    }
                }
                interfaz.getProfesorConsultar().jTable1.setValueAt(materias, i, 2);
                //System.out.println("fuck " + materias);
            }
            if (listaProfesores.get(i).getNiveles().size() <= 0 || listaProfesores.get(i).getNiveles() == null) {
                interfaz.getProfesorConsultar().jTable1.setValueAt("No asignado", i, 3);
            } else {
                String niveles = "";
                for (int j = 0; j < listaProfesores.get(i).getNiveles().size(); j++) {
                    if (j == 0) {
                        niveles = listaProfesores.get(i).getNiveles().get(j).getIdNivel();
                    } else {
                        niveles += ", ";
                        niveles += listaProfesores.get(i).getNiveles().get(j).getIdNivel();
                    }
                }
                interfaz.getProfesorConsultar().jTable1.setValueAt(niveles, i, 3);
                // System.out.println("fuck " + niveles);
            }

        }
    }

    public void llenarMaterias() {
        ArrayList<Materia> listaMaterias = controlGestores.getGestorMateria().ListarMaterias();
        for (int i = 0; i < listaMaterias.size(); i++) {
            interfaz.getMateriaConsultar().jTable1.setValueAt(listaMaterias.get(i).getNombreMateria(), i, 0);
            interfaz.getMateriaConsultar().jTable1.setValueAt(listaMaterias.get(i).getCantLecciones(), i, 1);
            interfaz.getMateriaConsultar().jTable1.setValueAt(listaMaterias.get(i).getNivel(), i, 2);
        }
    }

    public void llenarMateriasProfesorModificar() {
        ArrayList<Materia> listaMaterias = controlGestores.getGestorMateria().ListarMaterias();
        final String materias[] = new String[listaMaterias.size()];
        for (int i = 0; i < listaMaterias.size(); i++) {
            materias[i] = listaMaterias.get(i).getNombreMateria();
        }
        interfaz.getProfeosorModificar().jList1.setModel(new javax.swing.AbstractListModel() {
            String[] strings = materias;

            public int getSize() {
                return strings.length;
            }

            public Object getElementAt(int i) {
                return strings[i];
            }
        });
    }

    public void llenarProfesoresGrupoModificar() {
        String seccion = (String) interfaz.getGrupoConsultar().jTable1.getValueAt(interfaz.getGrupoConsultar().jTable1.getSelectedRow(), 0);
        Grupo g = controlGestores.getGestorGrupo().obtenerGrupo(seccion);
        ArrayList<Profesor> listaProfesores = controlGestores.getGestorProfesor().obtenerListaDeProfesXNivel(g.getIdNivel());
        final String profesor[] = new String[listaProfesores.size()];
        ArrayList<Profesor> lista2 = controlGestores.getGestorProfesor().ListarProfesores();
        for (int i = 0; i < listaProfesores.size(); i++) {
            String ced = listaProfesores.get(i).getCedula();
            for (int j = 0; j < lista2.size(); j++) {
                if (ced.equals(lista2.get(j).getCedula())) {
                    profesor[i] = lista2.get(j).getNombre();
                }
            }
        }
        interfaz.getGrupoModificar().jList1.setModel(new javax.swing.AbstractListModel() {
            String[] strings = profesor;

            public int getSize() {
                return strings.length;
            }

            public Object getElementAt(int i) {
                return strings[i];
            }
        });
    }

//    public void llenarProfesoresGrupoModificar() {
//        String nivel = this.cambiarNivel((String) interfaz.getGrupoConsultar().jComboBox1.getSelectedItem());
//        ArrayList<Profesor> listaProfesores = controlGestores.getGestorProfesor().obtenerListaDeProfesXNivel(nivel);
//        final String profesor[] = new String[listaProfesores.size()];
//        for (int i = 0; i < listaProfesores.size(); i++) {
//            profesor[i] = listaProfesores.get(i).getNombre();
//        }
//        interfaz.getGrupoModificar().jList1.setModel(new javax.swing.AbstractListModel() {
//            String[] strings = profesor;
//
//            public int getSize() {
//                return strings.length;
//            }
//
//            public Object getElementAt(int i) {
//                return strings[i];
//            }
//        });
//    }
    public boolean agregarUsuario() {
        boolean result = false;
        String user = interfaz.getUsuarioInsertar().jTextField1.getText();
        String pass = interfaz.getUsuarioInsertar().jPasswordField1.getText();
        String cPass = interfaz.getUsuarioInsertar().jPasswordField2.getText();
        int permiso = interfaz.getUsuarioInsertar().jComboBox1.getSelectedIndex();
        if (pass.equals(cPass)) {
            if (controlGestores.getGestorUsuario().existeUsuario(user) == true) {
                Usuario u = new Usuario(user, pass, permiso);
                result = controlGestores.getGestorUsuario().registrarUsuario(u);
            } else {
                result = false;
            }
        }
        return result;
    }

    public void llenarUsuarios() {
        ArrayList<Usuario> listaUsuarios = controlGestores.getGestorUsuario().obtenerLista();
        for (int i = 0; i < listaUsuarios.size(); i++) {
            String prioridad = "";
            if (listaUsuarios.get(i).getPrioridad() == 0) {
                prioridad = "Administrador";
            } else if (listaUsuarios.get(i).getPrioridad() == 1) {
                prioridad = "Creador";
            } else if (listaUsuarios.get(i).getPrioridad() == 2) {
                prioridad = "Bibliotecario";
            } else {
                prioridad = "Aprueba";
            }
            interfaz.getUsuarioConsultar().jTable1.setValueAt(listaUsuarios.get(i).getIdUsuario(), i, 0);
            interfaz.getUsuarioConsultar().jTable1.setValueAt(listaUsuarios.get(i).getClave(), i, 1);
            interfaz.getUsuarioConsultar().jTable1.setValueAt(prioridad, i, 2);
        }
    }

    public void llenarUsuarioModificar() {
        interfaz.getUsuarioModificar().jButton1.setEnabled(true);
        if (interfaz.getUsuarioConsultar().jTable1.getSelectedRowCount() > 0) {
            if (interfaz.getUsuarioConsultar().jTable1.getValueAt(interfaz.getUsuarioConsultar().jTable1.getSelectedRow(), 0) != null) {
                String usuario = String.valueOf(interfaz.getUsuarioConsultar().jTable1.getValueAt(interfaz.getUsuarioConsultar().jTable1.getSelectedRow(), 0));
                interfaz.getUsuarioModificar().jTextField1.setText(usuario);
            } else {
                interfaz.getUsuarioModificar().jTextField1.setText("Usuario Invalido");
                interfaz.getUsuarioModificar().jButton1.setEnabled(false);
            }
        } else {
            interfaz.getUsuarioModificar().jTextField1.setText("Usuario Invalido");
            interfaz.getUsuarioModificar().jButton1.setEnabled(false);
        }
    }

    public void llenarMateriaModificar() {
        interfaz.getMateriaModificar().jButton1.setEnabled(true);
        if (interfaz.getMateriaConsultar().jTable1.getSelectedRowCount() > 0) {
            if (interfaz.getMateriaConsultar().jTable1.getValueAt(interfaz.getMateriaConsultar().jTable1.getSelectedRow(), 0) != null) {
                String materia = String.valueOf(interfaz.getMateriaConsultar().jTable1.getValueAt(interfaz.getMateriaConsultar().jTable1.getSelectedRow(), 0));
                interfaz.getMateriaModificar().jTextField1.setText(materia);
            } else {
                interfaz.getMateriaModificar().jTextField1.setText("Materia Invalida");
                interfaz.getMateriaModificar().jButton1.setEnabled(false);
            }
        } else {
            interfaz.getMateriaModificar().jTextField1.setText("Materia Invalida");
            interfaz.getMateriaModificar().jButton1.setEnabled(false);
        }
    }

    public boolean materiaModificar() {
        boolean bandera = false;
        String materia = String.valueOf(interfaz.getMateriaConsultar().jTable1.getValueAt(interfaz.getMateriaConsultar().jTable1.getSelectedRow(), 0));
        String nivel = String.valueOf(interfaz.getMateriaConsultar().jTable1.getValueAt(interfaz.getMateriaConsultar().jTable1.getSelectedRow(), 2));
        int cantLecciones = (int) interfaz.getMateriaModificar().jSpinner1.getValue();
        bandera = controlGestores.getGestorMateria().modificarMateria(materia, nivel, cantLecciones);
        return bandera;
    }

    public void llenarGrupoModificar() {
        interfaz.getGrupoModificar().jButton2.setEnabled(true);
        if (interfaz.getGrupoConsultar().jTable1.getSelectedRowCount() > 0) {
            if (interfaz.getGrupoConsultar().jTable1.getValueAt(interfaz.getGrupoConsultar().jTable1.getSelectedRow(), 0) != null) {
                String seccion = String.valueOf(interfaz.getGrupoConsultar().jTable1.getValueAt(interfaz.getGrupoConsultar().jTable1.getSelectedRow(), 0));
                interfaz.getGrupoModificar().jLabel5.setText(seccion);
            } else {
                interfaz.getGrupoModificar().jLabel5.setText("Sección Invalida");
                interfaz.getGrupoModificar().jButton2.setEnabled(false);
            }
        } else {
            interfaz.getGrupoModificar().jLabel5.setText("Sección Invalida");
            interfaz.getGrupoModificar().jButton2.setEnabled(false);
        }
    }

    public void llenarProfesorModificar() {
        ArrayList<Profesor> listaProfesores = controlGestores.getGestorProfesor().ListarProfesores();
        String nombre = "";
        String direccion = "";
        String telefono = "";
        String restriccion = "";
        String lecciones = "";
        interfaz.getProfeosorModificar().jButton2.setEnabled(true);
        if (interfaz.getProfesorConsultar().jTable1.getSelectedRowCount() > 0) {
            if (interfaz.getProfesorConsultar().jTable1.getValueAt(interfaz.getProfesorConsultar().jTable1.getSelectedRow(), 0) != null) {
                String cedula = String.valueOf(interfaz.getProfesorConsultar().jTable1.getValueAt(interfaz.getProfesorConsultar().jTable1.getSelectedRow(), 0));
                for (int i = 0; i < listaProfesores.size(); i++) {
                    if (cedula.equals(listaProfesores.get(i).getCedula())) {
                        nombre = listaProfesores.get(i).getNombre();
                        direccion = listaProfesores.get(i).getDireccion();
                        telefono = listaProfesores.get(i).getTelefono();
                        restriccion = listaProfesores.get(i).getRestriccion();
                    }
                }
                interfaz.getProfeosorModificar().jTextField1.setText(cedula);
                interfaz.getProfeosorModificar().jTextField2.setText(nombre);
                interfaz.getProfeosorModificar().jTextField5.setText(direccion);
                interfaz.getProfeosorModificar().jTextField6.setText(telefono);
                interfaz.getProfeosorModificar().jTextArea1.setText(restriccion);
            } else {
                interfaz.getProfeosorModificar().jTextField1.setText("Profesor Invalido");
                interfaz.getProfeosorModificar().jButton2.setEnabled(false);
            }
        } else {
            interfaz.getProfeosorModificar().jTextField1.setText("Profesor Invalida");
            interfaz.getProfeosorModificar().jButton2.setEnabled(false);
        }
    }

    public boolean profesorEliminar() {
        boolean bandera = false;
        if (interfaz.getProfesorConsultar().jTable1.getSelectedRowCount() > 0) {
            if (interfaz.getProfesorConsultar().jTable1.getValueAt(interfaz.getProfesorConsultar().jTable1.getSelectedRow(), 0) != null) {
                String profesor = String.valueOf(interfaz.getProfesorConsultar().jTable1.getValueAt(interfaz.getProfesorConsultar().jTable1.getSelectedRow(), 0));
                controlGestores.getGestorProfesor().borrarMateriaProfesor(profesor);
                bandera = controlGestores.getGestorProfesor().eliminarProfesor(profesor);
                JOptionPane.showMessageDialog(null, "El profesor: " + profesor + " fue eliminado.", "Confirmación", JOptionPane.OK_OPTION);
            } else {
                JOptionPane.showMessageDialog(null, "No seleccionó ningún profesor", "Error al eliminar", JOptionPane.ERROR_MESSAGE);
            }
        } else {
            JOptionPane.showMessageDialog(null, "No seleccionó ningún profesor", "Error al eliminar", JOptionPane.ERROR_MESSAGE);
        }
        return bandera;
    }

    public boolean profesorModificar() {
        boolean bandera = false;
        String cedula = String.valueOf(interfaz.getProfesorConsultar().jTable1.getValueAt(interfaz.getProfesorConsultar().jTable1.getSelectedRow(), 0));
        String nombre = interfaz.getProfeosorModificar().jTextField2.getText();
        String direccion = interfaz.getProfeosorModificar().jTextField5.getText();
        String tel = interfaz.getProfeosorModificar().jTextField6.getText();
        String cat = String.valueOf(interfaz.getProfeosorModificar().jComboBox1.getSelectedItem());
        String tipo = String.valueOf(interfaz.getProfeosorModificar().jComboBox2.getSelectedItem());
        String restric = interfaz.getProfeosorModificar().jTextArea1.getText();

        Profesor p = new Profesor(cedula, nombre, tel, direccion, cat, restric, tipo);
        bandera = controlGestores.getGestorProfesor().modificarProfesor(p);
        return bandera;
    }

    public boolean modificarMateriasProfesor() {
        boolean bandera = false;
        ArrayList<String> materias = new ArrayList();
        String cedula = String.valueOf(interfaz.getProfesorConsultar().jTable1.getValueAt(interfaz.getProfesorConsultar().jTable1.getSelectedRow(), 0));
        Profesor p = new Profesor(cedula, "", "", "", "", "", "");
        for (int i = 0; i < interfaz.getProfeosorModificar().jList1.getSelectedValuesList().size(); i++) {
            materias.add(String.valueOf(interfaz.getProfeosorModificar().jList1.getSelectedValuesList().get(i)));
        }
        bandera = controlGestores.getGestorProfesor().modificarMateriasProfesor(p, materias);
        return bandera;
    }

    public boolean usuarioModificar() {
        boolean bandera = false;
        String usuario = String.valueOf(interfaz.getUsuarioConsultar().jTable1.getValueAt(interfaz.getUsuarioConsultar().jTable1.getSelectedRow(), 0));
        String pass = interfaz.getUsuarioModificar().jPasswordField1.getText();
        String cPass = interfaz.getUsuarioModificar().jPasswordField2.getText();
        if (pass.compareTo(cPass) == 0) {
            bandera = controlGestores.getGestorUsuario().modificarUsuario(usuario, pass);
        }
        return bandera;
    }

    public void limpiaTabla(JTable tabla) {
        DefaultTableModel temp;
        try {
            temp = (DefaultTableModel) tabla.getModel();
            int a = temp.getRowCount();
            for (int i = 0; i < a; i++) {
                temp.removeRow(i);
            }
        } catch (Exception e) {
            System.err.println(e);
        }
    }

    public boolean usuarioEliminar() {
        boolean bandera = false;
        if (interfaz.getUsuarioConsultar().jTable1.getSelectedRowCount() > 0) {
            if (interfaz.getUsuarioConsultar().jTable1.getValueAt(interfaz.getUsuarioConsultar().jTable1.getSelectedRow(), 0) != null) {
                String usuario = String.valueOf(interfaz.getUsuarioConsultar().jTable1.getValueAt(interfaz.getUsuarioConsultar().jTable1.getSelectedRow(), 0));
                if (!usuario.equals(interfaz.getUsuarioActual().getIdUsuario())) {
                    bandera = controlGestores.getGestorUsuario().eliminarUsuario(usuario);
                    JOptionPane.showMessageDialog(null, "El usuario: " + usuario + " fue eliminado.", "Confirmación", JOptionPane.OK_OPTION);
                } else {
                    JOptionPane.showMessageDialog(null, "No se puede eliminar el usuario seleccionado", "Error al eliminar", JOptionPane.ERROR_MESSAGE);
                }
            } else {
                JOptionPane.showMessageDialog(null, "No seleccionó ningún usuario", "Error al eliminar", JOptionPane.ERROR_MESSAGE);
            }
        } else {
            JOptionPane.showMessageDialog(null, "No seleccionó ningún usuario", "Error al eliminar", JOptionPane.ERROR_MESSAGE);
        }
        return bandera;
    }

    public void llenarGrupos(String nivel) {
        String cn = cambiarNivel(nivel);
        ArrayList<Grupo> listaGrupos = controlGestores.getGestorGrupo().obtenerSeccion(cn);

        for (int i = 0; i < listaGrupos.size(); i++) {
            interfaz.getGrupoConsultar().jTable1.setValueAt(listaGrupos.get(i).getSeccion(), i, 0);
            if (listaGrupos.get(i).getProfesorGuia() != null) {
                interfaz.getGrupoConsultar().jTable1.setValueAt(listaGrupos.get(i).getProfesorGuia(), i, 1);
            } else {
                interfaz.getGrupoConsultar().jTable1.setValueAt("No asignado", i, 1);
            }
        }

    }

    public void llenarGruposConsultar() {
        ArrayList<Grupo> listaGrupos = controlGestores.getGestorGrupo().obtenerGrupoProfeGuia();

        for (int i = 0; i < listaGrupos.size(); i++) {
            interfaz.getGrupoConsultar().jTable1.setValueAt(listaGrupos.get(i).getSeccion(), i, 0);
            if (listaGrupos.get(i).getProfesorGuia() != null) {
                interfaz.getGrupoConsultar().jTable1.setValueAt(listaGrupos.get(i).getProfesorGuia(), i, 1);
            } else {
                interfaz.getGrupoConsultar().jTable1.setValueAt("No asignado", i, 1);
            }
        }

    }

    public boolean agregarGrupos(int cantidad) {
        String idNivel = "";
        String seccion = "";
        if (interfaz.getGrupoInsertar().jRadioButton1.isSelected()) {
            idNivel = "7";
        } else if (interfaz.getGrupoInsertar().jRadioButton2.isSelected()) {
            idNivel = "8";
        } else if (interfaz.getGrupoInsertar().jRadioButton3.isSelected()) {
            idNivel = "9";
        } else if (interfaz.getGrupoInsertar().jRadioButton4.isSelected()) {
            idNivel = "10";
        } else if (interfaz.getGrupoInsertar().jRadioButton5.isSelected()) {
            idNivel = "11";
        }
        return controlGestores.getGestorGrupo().registroGrupo(idNivel, cantidad);

    }

    public void llenarAulas() {
        if (controlGestores.getGestorRegistro().ListarAulas().size() > 0) {
            int posicion = 0;
            for (RegistroHorario rh : controlGestores.getGestorRegistro().ListarAulas()) {
                interfaz.getAulaConsultar().getjTable1().setValueAt(rh.getIdAula(), posicion, 0);
                interfaz.getAulaConsultar().getjTable1().setValueAt(rh.getDia(), posicion, 1);
                interfaz.getAulaConsultar().getjTable1().setValueAt(rh.getHora(), posicion, 2);

                interfaz.getAulaConsultar().getjTable1().setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(rh.getCedula()).getNombre(), posicion, 3);
                interfaz.getAulaConsultar().getjTable1().setValueAt(rh.getSeccion(), posicion, 4);
                posicion++;
            }
        }
    }

    public void asignarProfesor() {
        int cantLecciones = ((int) (interfaz.getProfesorAsignar().jSpinner1.getValue()));
        String pCedula = ((String) (interfaz.getProfesorAsignar().getCedulaProfeL().getText()));
        String seccion = ((String) (interfaz.getProfesorAsignar().getjTable2().getValueAt(interfaz.getProfesorAsignar().getjTable2().getSelectedRow(), 0)));
        controlGestores.getGestorProfesor().agregarCantLeccionesProfesor(pCedula, cantLecciones);
        controlGestores.getGestorGrupo().AsignarProfesorGuia(seccion, pCedula);
    }

    public void llenarProfesorAsignar() {
        int numFila = interfaz.getProfesorConsultar().jTable1.getSelectedRow();
        String pCedula = ((String) (interfaz.getProfesorConsultar().jTable1.getValueAt(numFila, 0)));
        String pNombre = ((String) (interfaz.getProfesorConsultar().jTable1.getValueAt(numFila, 1)));
        setLabelsAsigProfe(pNombre, pCedula);
    }

    public void llenarSeccionesAsigProfe() {//Llena la lista de grupo en asignar Profesor
        limpiarTablaProfesorAsig();
        int fila = 0;
        ArrayList<Grupo> listaGrupos = this.getControlGestores().getGestorGrupo().ListarGrupos();
        int numFilaNivel = interfaz.getProfesorAsignar().getjTable1().getSelectedRow();
        String nivel = ((String) (interfaz.getProfesorAsignar().getjTable1().getValueAt(numFilaNivel, 0)));
        for (int i = 0; i < listaGrupos.size(); i++) {
            if (convertidorNiveles(listaGrupos.get(i).getIdNivel()).equals(nivel)) {
                interfaz.getProfesorAsignar().getjTable2().setValueAt(listaGrupos.get(i).getSeccion(), fila, 0);
                fila++;
            }
        }
    }

    public String convertidorNiveles(String pNivel) {
        String nivel = "";
        if (pNivel.equals("7")) {
            nivel = "setimo";
        }
        if (pNivel.equals("8")) {
            nivel = "octavo";
        }
        if (pNivel.equals("9")) {
            nivel = "noveno";
        }
        if (pNivel.equals("10")) {
            nivel = "decimo";
        }
        if (pNivel.equals("11")) {
            nivel = "undecimo";
        }
        return nivel;
    }

    public String convertirNivelesNumero(String pNivel) {
        String nivel = "";
        if (pNivel.equals("setimo")) {
            nivel = "7";
        }
        if (pNivel.equals("octavo")) {
            nivel = "8";
        }
        if (pNivel.equals("noveno")) {
            nivel = "9";
        }
        if (pNivel.equals("decimo")) {
            nivel = "10";
        }
        if (pNivel.equals("undecimo")) {
            nivel = "11";
        }
        return nivel;
    }

    public void limpiarTablaProfesorAsig() {
        for (int i = 0; i < interfaz.getProfesorAsignar().getjTable1().getRowCount(); i++) {
            interfaz.getProfesorAsignar().getjTable2().setValueAt("", i, 0);
        }
    }

    public void setLabelsAsigProfe(String pNombre, String pCed) {
        interfaz.getProfesorAsignar().getNombreProfeL().setText(pNombre);
        interfaz.getProfesorAsignar().getCedulaProfeL().setText(pCed);
    }

    public void buscarAula() {
        controlGestores.getGestorAula();
    }

    public void llenarAulaConsultar() {
        ArrayList<Aula> listaAulas = controlGestores.getGestorAula().ListarAulas();
        interfaz.getAulaConsultar().getjTextField1().setText("");
        limpiarTablaAulaConsult();
        for (int i = 0; i < listaAulas.size(); i++) {
            interfaz.getAulaConsultar().getjTable1().setValueAt(listaAulas.get(i).getIdAula(), i, 0);
        }
    }

    public boolean eliminarAula() {
        String codigo = ((String) (interfaz.getAulaConsultar().getjTable1().getValueAt(interfaz.getAulaConsultar().getjTable1().getSelectedRow(), 0)));
        boolean resp=false;
        if(controlGestores.getGestorAula().borrarAula(codigo)){
            JOptionPane.showMessageDialog(null,"Aula eliminada correctamente","EXITO",1);
            resp=true;
        }else{
            JOptionPane.showMessageDialog(null,"El Aula no pudo ser eliminada","ERROR",0);
        }
        llenarAulaConsultar();
        return resp;
    }
    
    public void limpiarTablaAulaConsult(){
        for (int i = 0; i < interfaz.getAulaConsultar().getjTable1().getRowCount(); i++) {
            interfaz.getAulaConsultar().getjTable1().setValueAt("", i, 0);
        }
    }

    public void iniciar() {

        //Create and show the GUI.
        interfaz.init();
    }

    public Interfaz getInterfaz() {
        return interfaz;
    }

    public void setInterfaz(Interfaz interfaz) {
        this.interfaz = interfaz;
    }

    public ControlGestores getControlGestores() {
        return controlGestores;
    }

    public void setControlGestores(ControlGestores controlGestores) {
        this.controlGestores = controlGestores;
    }

}
